﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations;

namespace SIBI.Models
{
    public class BienInformatico
    {
        [Key]
        [Required(ErrorMessage = "El serial es requerido")]
        public string BienInformaticoId { get; set; }

        [Required(ErrorMessage = "La Ubicación Física es requerida")]
        public string cubf { get; set; }

        public string nanf { get; set; }

        public string nena { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? dfva { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? dfde { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? diga { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? dfga { get; set; }

        public string cdes { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? dfpr { get; set; }

        public bool cflg { get; set; }

        
        public string PadreId { get; set; }

        [Required(ErrorMessage = "El Estado es requerido")]
        public int EstadoId { get; set; }

        [Required(ErrorMessage = "El Tipo de Bien es requerido")]
        public int TipoBienId { get; set; }

        [Required(ErrorMessage = "La Sociedad es requerida")]
        public int SociedadId { get; set; }

        public string DivisionId { get; set; }

        public string CargoId { get; set; }

        [Required(ErrorMessage = "El Modelo es requerido")]
        public int MarcaModeloId { get; set; }

        public string ceco_id { get; set; }

        [Required(ErrorMessage = "La Localidad es requerida")]
        public string localidad_id { get; set; }


        public virtual BienInformatico npad { get; set; }

        public virtual Estado nest { get; set; }

        public virtual TipoBien ntib { get; set; }

        public virtual Sociedad nsoc { get; set; }

        public virtual Division ndiv { get; set; }

        public virtual Cargo ncar { get; set; }

        public virtual MarcaModelo nmym { get; set; }

        public virtual View_TejLocalidad nloc { get; set; }
        public virtual View_TejCECO ncec { get; set; }


        public virtual ICollection<Mantenimiento> Mantenimientos { get; set; }

        public virtual ICollection<Movimiento> Movimientos { get; set; }


        //CAJA NEGRA

        //public string cloc { get; set; }

        //public string ncec { get; set; }


    }

    public class Estado
    {
        public int EstadoId { get; set; }

        [Required(ErrorMessage = "El nombre es requerido")]
        public string cnom { get; set; }

        public virtual ICollection<BienInformatico> BienesInformaticos { get; set; }
    }

    public class TipoBien
    {
        public int TipoBienId { get; set; }

        [Required(ErrorMessage = "El nombre es requerido")]
        public string cnom { get; set; }

        public virtual ICollection<BienInformatico> BienesInformaticos { get; set; }
    }

    public class Sociedad
    {
        public int SociedadId { get; set; }

        public string cnom { get; set; }

        [Required(ErrorMessage = "El nombre es requerido")]
        public string cscc { get; set; }

        public virtual ICollection<BienInformatico> BienesInformaticos { get; set; }
    }

    public class Division
    {   
        [Key]
        public string DivisionId { get; set; }

        [Required(ErrorMessage = "La división es requerida")]
        public string cper { get; set; }

        public string cdvv { get; set; }

        public virtual ICollection<BienInformatico> BienesInformaticos { get; set; }
    }

    public class Cargo
    {
        public string n_personal { get; set; }

        public string empleados { get; set; }

        [Key]
        public string CargoId { get; set; }

        public string cdes { get; set; } /*posiciones*/

        public string correo { get; set; }

        public string ceco { get; set; }

        public string division { get; set; }

        public virtual ICollection<BienInformatico> BienesInformaticos { get; set; }
    }

    public class MarcaModelo
    {
        public int MarcaModeloId { get; set; }

        [Required(ErrorMessage = "El nombre es requerido")]
        public string cmod { get; set; }

        [Required(ErrorMessage = "La Marca es requerida")]
        public int MarcaId { get; set; }

        [Required(ErrorMessage = "La Clase de Objeto es requerida")]
        public int ClaseObjetoId { get; set; }


        public virtual Marca nmar { get; set; }

        public virtual ClaseObjeto ncob { get; set; }

        public virtual ICollection<BienInformatico> BienesInformaticos { get; set; }
    }

    public class Marca
    {
        public int MarcaId { get; set; }

        [Required(ErrorMessage = "El nombre es requerido")]
        public string cnom { get; set; }

        public virtual ICollection<MarcaModelo> MarcasModelos { get; set; }
    }

    public class ClaseObjeto
    {
        public int ClaseObjetoId { get; set; }

        [Required(ErrorMessage = "El nombre es requerido")]
        public string cnom { get; set; }

        public virtual ICollection<MarcaModelo> MarcasModelos { get; set; }
    }


    public class Proveedor
    {
        public int ProveedorId { get; set; }

        [Required(ErrorMessage = "El nombre es requerido")]
        public string cnom { get; set; }

        public string cres { get; set; }

        public string cubi { get; set; }

        public string cdes { get; set; }

        public string ccor { get; set; }

        public virtual ICollection<Mantenimiento> Mantenimientos { get; set; }
    }


    public class CausaMovimiento
    {
        public int CausaMovimientoId { get; set; }

        [Required(ErrorMessage = "El nombre es requerido")]
        public string cnom { get; set; }

        public virtual ICollection<Movimiento> Movimientos { get; set; }

        public virtual ICollection<ControlCorreo> ControlCorreos { get; set; }

    }

    public class Mantenimiento
    {
        public int MantenimientoId { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? dman { get; set; }

        [Required(ErrorMessage = "La fecha es requerida")]
        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime dfim { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? dffm { get; set; }

        public string cobs { get; set; }

        public bool cflg { get; set; }

        
        [Required(ErrorMessage = "El proveedor es requerido")]
        public int ProveedorId { get; set; }

        [Required(ErrorMessage = "El Serial es Requerido")]
        public string BienInformaticoId { get; set; }

        
        public virtual Proveedor npro { get; set; }

        public virtual BienInformatico nbin { get; set; }

    }

    public class Movimiento
    {
        public int MovimientoId { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? dmov { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime? dfmo { get; set; }

        public string ctmo { get; set; }

        public string cobs { get; set; }

        [Required(ErrorMessage = "La Ubicación Física es Requerida")]
        public string cubf { get; set; }

        [Required(ErrorMessage = "La Localidad es requerida")]
        public string localidad_id { get; set; }


        public int CausaMovimientoId { get; set; }

        public string BienInformaticoId { get; set; }

        public virtual CausaMovimiento ncmo { get; set; }

        public virtual BienInformatico nbin { get; set; }


        //CAJA NEGRA

        //public int nloc { get; set;}
    }

    public class DefaultResguardo
    {
        public int DefaultResguarodId { get; set; }

        public string cest { get; set; }

        public int nsoc { get; set; }

        public string cubf { get; set; }

        public string cloc { get; set; }

        public int ndiv { get; set; }

        public int ncar { get; set; }

    }

    public class ControlCorreo
    {
        public int ControlCorreoId { get; set; }

        public int CausaMovimientoId { get; set; }

        public string ccor { get; set; }

        public int? nfre { get; set; }

        public virtual CausaMovimiento ncam { get; set; }

    }

    public class CargoBajas
    {
        [Key]
        public int CargoBajaId { get; set; }

        public string idCargo { get; set; }

        public string cnom { get; set; }

        public string cdes { get; set; }

        public string idPers { get; set; }

        public bool cflg { get; set; }

        public bool cbac { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime dbaj { get; set; }

        public string idCargoNew { get; set; }

        public string cdesNew { get; set; }

        public string cloc { get; set; }

        public bool aflg { get; set; }

        public string clocNew { get; set; }

    }


    public class View_TejCECO
    {

        [Key]
        public string ceco_id { get; set; }

        public string ceco_descripcion { get; set; }

        public virtual ICollection<BienInformatico> BienesInformaticos { get; set; }
    }


    public class View_TejLocalidad
    {
        [Key]
        public string localidad_id { get; set; }
        public string localidad_nombre { get; set; }

        public virtual ICollection<BienInformatico> BienesInformaticos { get; set; }
    }
}